package com.tul.exercise.base.innerclass.chapter10_1;


/**
 * @Description 《java编程思想》10.1 示例 1
 *  外部类非static 方法返回内部类对象的引用
 **/
public class Parcel2 {

    /**
     * 内部类 Contents
     */
    class Contents {
        private int i = 11;
        public int value() {
            return i;
        }
    }

    /**
     * 内部类 Destination
     */
    class Destination {
        private String label;

        Destination (String label) {
            this.label = label;

        }

        String readLable() {
            return label;
        }
    }

    /**
     * 外部类非static 方法返回内部类Destination对象的引用
     * @param s
     * @return
     */
    public Destination to(String s) {
        return new Destination(s);
    }

    /**
     * 外部类非static 方法返回内部类Contents对象的引用
     * @return
     */
    public Contents contents() {
        return new Contents();
    }

    public void ship(String dest) {
        Contents c = contents();
        Destination d = to(dest);
        System.out.println(d.readLable());
    }

    public static void main(String[] args) {
        Parcel2 p = new Parcel2();
        p.ship("WuHan");

        Contents c = p.contents();
        Destination s = p.to("Wuhan");

    }
}
